<body></body>
<script>
  // 1. 双向引用的示例
  const son = {name: 'son'}
  const parent = {name: 'parent', son: son}
  son.parent = parent
  console.log(son) // { name: 'son', parent: { name: 'parent', son: [Circular] } }
  console.log(parent) // { name: 'parent', son: { name: 'son', parent: [Circular] } }

  // 2、指针访问闭包
  let activeEffect
  function effect(fn) {
    function effectFn() {
      activeEffect = effectFn
      fn()
    }
    effectFn.deps = [1, 2, 3]
    effectFn()
  }
  // 1、通过全局变量 activeEffect 访问 函数内部 effectFn.deps（闭包、也叫指针保存吧）
  effect(() => {
    console.log(activeEffect.deps)
    activeEffect.deps.push(4)
    console.log(activeEffect.deps) // 说明一个了 effect利用函数 做了隔离处理
  })
  // 2、副作用执行生成 新的effectFn.deps，deps会被重置（deps是内部数据）
  effect(() => {
    console.log(activeEffect.deps)
    activeEffect.deps.push(4)
  })
</script>
